package com.application.util;

import com.application.domain.User;
import com.application.dto.UserDTO;
import org.apache.http.HttpStatus;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


// 配置拦截器 实现 在 用户使用功能的时候  先判断用户是否存在
public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 到 UserHolder  到 拿去数据  因为  我们将 用户存放到 redis当中
        // 我们根据 前端的token 来判断  redis 中  的key是否 存在  存在了  那么就放入UserHolder
        UserDTO userDTO = UserHolder.getUser();

        // 还没有登录
        if(userDTO == null){
            // 就是 还没有  登录
            response.setStatus(HttpStatus.SC_NOT_FOUND);
            return false;
        }

        // 登录  就放行
        return true;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}
